package com.example.mapper;


import com.example.annotation.AutoFill;
import com.example.dto.CategoryDTO;

import com.example.enumeration.OperationType;
import com.github.pagehelper.Page;
import org.apache.ibatis.annotations.Delete;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Select;
import org.apache.ibatis.annotations.Update;

import java.util.List;

@Mapper
public interface CategoryMapper {

    /**
     * 展示所有分类
     * @param page
     * @param pageSize
     * @return
     */
    @Select("select * from category")
    Page<CategoryDTO> showCategory(Integer page, Integer pageSize);

    /**
     * 按名字查询分类
     * @param name
     * @param page
     * @param pageSize
     * @return
     */
    Page<CategoryDTO> selectNameCategory(String name, Integer page, Integer pageSize);

    /**
     * 分类禁用，启用
     * @param status
     * @param id
     */
    @Update("update category set status=#{status} where id=#{id}")
    void starOrStop(Integer status, Integer id);


    /**
     * 删除分类
     * @param id
     */
    @Delete("delete from category where id=#{id}")
    void deleteCategory(Integer id);

    /**
     * 批量删除
     * @param ids
     */
    void deleteCategories(List<Integer> ids);

    /**
     * 新增分类
     * @param categoryDTO
     */
    @AutoFill(value = OperationType.INSERT)
    void addCategory(CategoryDTO categoryDTO);


    /**
     * 数据回显
     * @param id
     * @return
     */
    @Select("select * from category where id=#{id}")
    CategoryDTO selectCategory(Integer id);

    /**
     * 修改分类
     * @param categoryDTO
     */
    @AutoFill(value = OperationType.UPDATE)
    void updateCategory(CategoryDTO categoryDTO);

    /**
     * 查询分类
     * @return
     */
    @Select("select * from category order by sort,create_time desc")
    List<CategoryDTO> list();
}
